#include<iostream>
#include<cstring>
using namespace std;
const int maxn=100;
char x[maxn],y[maxn];
int dp[maxn][maxn];
// int cost[]={0   ,1  ,1  ,1  ,1  ,1}
//          cp   re  del ins swap kill
int main()
{
    cin>>x+1>>y+1;
    int nx=strlen(x+1),ny=strlen(y+1);
    // cout<<x+1<<y+1<<endl;
    for(int i=1;i<=nx;i++) dp[i][0]=i;
    for(int i=1;i<=ny;i++) dp[0][i]=i;
    for(int i=1;i<=nx;i++)
    {
        for(int j=1;j<=ny;j++)
        {
            if(x[i]==y[j])
            dp[i][j]=dp[i-1][j-1];
            else{
                dp[i][j]=min(min(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1])+1;
                if(i>1&&j>1&&x[i]==y[i-1]&&x[i-1]==y[i])
                dp[i][j]=min(dp[i-2][j-2]+1,dp[i][j]);
            }
            cout<<dp[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<dp[nx][ny];
}